/*—————————————————————————————————————————————————————————— 公共action状态声明 ——————————————————————————————————————————————————————————*/

// 引入内容区域
import {
  UpdataRouter,
  changeLayoutInterface,
  OverallLoading,
  SetUserMenu,
} from './interface'

// action同步声明
// 每个函数都有两个参数，state为目前的所有的数据；第二个参数为一个对象，我们在页面使用该方法传入的所有值都放在其payload参数中
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// 更新路由数组函数
const updataRouter: UpdataRouter = (state, { payload }) => {
  state.Router = payload
}

// 改变页面layout布局动态方法
// ---------------------------------------------------------------------------------------------
const changeLayout: changeLayoutInterface = (state, { payload }) => {
  // 只要与当前的状态不一样时，才能进行改变
  state.layoutShow = payload
}

// 全局loading配置方法
// ---------------------------------------------------------------------------------------------
const setOverallLoading: OverallLoading = (state, { payload }) => {
  // 结构出需要的内容参数
  const { status, text = '加 载 中 . . .' } = payload

  // 只有当需要修改的内容和当前状态与值不一样时，才能进行改变
  state.overallLoading != status && (state.overallLoading = payload.status)
  state.overallLoadingText != text && (state.overallLoadingText = payload.text)
}

// 设置用户导航菜单栏
// ---------------------------------------------------------------------------------------------
const setUserMenu: SetUserMenu = (state, { payload }) => {
  // 同步当前用户导航栏数据
  state.userMenu = payload
}

// 同步action集合对象，方便后续直接使用
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
const actionObj = { updataRouter, changeLayout, setOverallLoading, setUserMenu }

// 以默认的方式导出此集合对象
export default actionObj
